perm filename ARMUS[SYS,HE] blob
sn#064722 filedate 1973-10-01 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00011 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 IFN SIMU,< THIS IS SIMULATION ONLY
00006 00003 SKIPE BAND
00007 00004 MOVE 1,FILE
00008 00005 ZDTH:
00011 00006 BACK:
00013 00007 IFN REPORT+TRACK,<
00014 00008 READ: SETZM STWT
00015 00009 SPACE: MOVEI 1,=180
00017 00010 FINISH: SPCWAR 636367
00018 00011 SETFLT: SKIPN NERVES
00019 ENDMK
⊗;
IFN SIMU,< ;THIS IS SIMULATION ONLY
ARM.IN: SETZM INRUN ;TO CALL GAIN AND CHANGE JOBNAM TO [ARM]
SETOM ARMINI ;INDICATES ARM.IN HAS BEEN CALLED
PUSHJ P,GAIN
ARM.ST: SETO 1, ;INDICATES END OF RUN
SKIPN ARMINI
POPJ P,
MOVEM 16,SSAVE+16 ;SAVE SAIL AC'S EXCEPT FOR STACK
MOVEI 16,SSAVE
BLT 16,SSAVE+15
SKIPE INRUN
JRST[ HRLZI 16,MSAVE ;PUT BACK IN RUN AC'S
BLT 16,15
MOVE 16,MSAVE+16
JRST SSW] ;AND RETURN TO SPACE WAR
JRST GETMES
INRUN: 0 ;IN THE MIDDLE OF A RUN DO NEXT TICK
ARMINI: 0 ;ARM.IN HAS BEEN CALLED
SSAVE: BLOCK 17 ;SAIL AC'S
MSAVE: BLOCK 17 ;USER AC'S
WAIT: HRLZI 16,SSAVE ;PUT BACK AC'S
BLT 16,15
MOVE 16,SSAVE+16
SETZM INRUN
POPJ P,
GETMES: SETOM INRUN
>
IFE SIMU,<
START: MOVE P,[XWD -PDLL,UPDL]
PUSHJ P,GAIN
OUTSTR[ASCIZ/!
/]
WAIT:
>
WRCV EXE
HLRZ 5,EXE
CAIE 5,MASTER
JRST[ MOVEI 3,VERSN
JRST FINISH]
WAITED: MOVE 1,SEGJOB
HRRZM 1,JOB
HLRZM 1,SEG
IFN REPORT+TRACK,<
MOVE 1,[IOWD DBL+100,DATO]
MOVEM 1,DATPT ;DATA POINTER
MOVEM 1,DATIWD ;OUTPUT POINTER
>
SETZB 3,TRAJER
MOVEI 0,0
LDB 1,[POINT 3,EXE,35]
CAIG 1,1
JRST READ
IFE ARMWORK,<
MOVEI 3,NOTHER
JRST FINISH
>
IFN REPORT+TRACK,< ;WRITE OUT DATA
INIT 15,17
SIXBIT /DSK/
0
JRST NDM
MOVE 2,FILE
MOVEM 2,DFILE
MOVE 2,PPPN
MOVEM 2,DPPPN
IFN TRACK,<
SKIPE WALK
JRST[ LOOKUP 15,DFILE
JRST NDMS
MOVE 2,[IOWD DBL,DATO]
MOVEM 2,DATPT
INPUT 15,1
JRST EXFN]
>
ENTER 15,DFILE
JRST[NDMS:MOVEI 3,NODATA
SUB 17,[XWD 1,1]
JRST FINISH]
>
EXFN: CAIN 1,3
JRST[ MOVE 4,EXE
TRNN 4,HOLDF
JRST [ SKIPE ARGS
SOS JUMPBK
JRST MOVON]
SOS 1,STKPTR
MOVEI 2,(1)
LDB 3,[POINT 9,EXE,26]
SUBI 1,(3)
HRLI 1,ARGS
BLT 1,(2)
TRNE 4,RELOCF
JRST[ MOVE 1,STKPTR
SUBI 1,(3)
SUB 1,CBUFS
HRRM 1,@STKPTR
JRST BPTR]
BPTR: SOS STKPTR
MOVON: SETOM FUNCT
JRST SSW]
CAIE 1,2
JRST[ MOVEI 3,INVMES
JRST FINISH]
SETZM FUNCT
HRREI 2,BUF-1001
MOVEM 2,CBUFS
SETOM BUF
SETZM DOING ;TRAJECTORY SET UP FOR
SKIPE BAND
JRST[ MOVEI 1,BUF
MOVEM 1,GOODIE
MOVEI 1,1001
MOVEM 1,GOODIE+1
SETZM GOODIE+2
MOVE 14,BAND
UFBRD 14,GOODIE
JRST RE
SKIPN BUF+1000
JRST[ SETZM BLOCKS
MOVEI 1,BUF2
MOVEM 1,NXTBUF
SETZM @NXTBUF
JRST ZDTH]
MOVEI 1,BUF2
MOVEM 1,GOODIE
MOVEI 1,20
MOVEM 1,GOODIE+2
UFBRD 14,GOODIE
JRST RE
MOVEI 1,=74
SKIPN BUF2+1000
MOVEI 1,0
MOVEM 1,BLOCKS
MOVEI 1,40
MOVEM 1,GOODIE+2
MOVEI 1,BUF
MOVEM 1,NXTBUF
MOVNS BUF2
JRST ZDTH]
MOVE 1,FILE
MOVEM 1,LFILE
MOVE 1,PPPN
MOVEM 1,LPPPN
INIT 16,17
SIXBIT/DSK/
XWD 0,0
JRST[NDM: MOVEI 3,NODEV
JRST FINISH]
LOOKUP 16,LFILE
JRST[ MOVEI 3,NOFILE
JRST FINISH]
MOVS 1,LPPPN ;FILE LENGTH
MOVN 1,1
ASH 1,-11
MOVEM 1,BLOCKS
SOSGE BLOCKS
JRST FINISH
MOVE 10,[IOWD 1000,BUF]
SETZ 11,
IN 16,10
JRST[ SOSGE BLOCKS
JRST[ MOVEI 1,BUF2
MOVEM 1,NXTBUF
SETZM @NXTBUF
JRST ZDTH]
ADDI 10,1001
IN 16,10
JRST[ MOVEI 1,BUF
MOVEM 1,NXTBUF
MOVNS BUF2
JRST ZDTH]
JRST RE]
JRST RE
ZDTH:
MOVE 1,[XWD DELTH,DELTH+1]
SETZM DELTH
BLT 1,DELTH+5
MOVEI 1,=60
MOVEM 1,STWT
MOVNS BUF
SSW:
IFE USER+TRACK,<LOCK 1,>
PUSHJ P,SPACE
WWS:
IFE REPORT+TRACK<
IFE USER<
MOVEI 1,1
CALLI 1,31
>
>
MOVE BITSAV
TRNE DTST
JRST BACK
MOVE 1,@NXTBUF
JUMPGE 1,.+2 ;MORE TRAJECTORY TO COME
JRST[ SOSGE BLOCKS
JRST[ SETZM @NXTBUF ;ALL DONE MAKK THIS AS LAST
RELEASE 16,
JRST WDO]
SKIPE BAND
JRST[ MOVE 1,NXTBUF
MOVEM 1,GOODIE
UFBRD 14,GOODIE
JRST RBD
MOVE 1,NXTBUF
SKIPN 1000(1)
SETZM BLOCKS
MOVEI 1,20
ADDM 1,GOODIE+2
JRST ROK]
MOVE 10,NXTBUF
SOJ 10,
HRLI 10,-1000
IN 16,10
JRST[ROK:MOVE 1,NXTBUF
MOVNS (1)
ADDI 1,1001
CAILE 1,BUF2
MOVEI 1,BUF
MOVEM 1,NXTBUF
JRST WDO]
RBD: MOVE 1,NXTBUF ;READ ERROR
SETZM @NXTBUF ;MARK AS LAST
WFF: MOVE BITSAV ;AND WAIT FOR IT TO END
TRNN DTST
JRST WFF
RE: MOVEI 3,REAERR
JRST BACK]
WDO:
IFN SIMU,<
MOVEM 16,MSAVE+16
MOVEI 16,MSAVE
BLT 16,MSAVE+15
HRLZI 16,SSAVE
BLT 16,15
MOVE 16,SSAVE+16
SETZ 1,
POPJ P,
>
IFE REPORT+TRACK,<
IFE USER,<JRST WWS>
IFN USER,<JRST SSW>
>
IFN TRACK,<
SKIPE WALK
JRST SSW
>
IFN REPORT+TRACK,<
HRRZ 1,DATIWD ;START TO WRITE
CAIL 1,DATO+DBL-1
JRST DOD
HRRZ 2,DATPT ;LAST LOC FILLED
WA: SUBI 2,(1)
JUMPL 2,[MOVEI 2,DATO+DBL-1
JRST WA]
TRZ 2,177
JUMPN 2,[ MOVN 1,2 ;MORE THAN 200 WORDS SO WRITE IT OUT
HRLM 1,DATIWD ;NEG WORD COUNT
OUT 15,DATIWD
HRRZ 1,DATIWD
ADDI 1,(2)
HRRM 1,DATIWD
JRST DOD]
DOD:
IFE USER,<JRST WWS>
IFN USER,<JRST SSW>
>
BACK:
IFE USER+TRACK,<UNLOCK 1,>
SPCWAR 636367
MOVEI 0,0
SKIPE 3,TRAJER
JRST[ IFE DEB+SIMU,<
IFN TRACK,<SKIPN WALK>
TRO RONLY
MOVEM BITSAV
MOVEI 1,1
CALLI 1,31
DRSW: PUSHJ P,SPACE
DRR: MOVE BITSAV
TRNN DTST
IFE USER,<JRST DRR>
IFN USER,<JRST DRSW>
SPCWAR 636367
MOVEI 0,0
PUSHJ P,SETSET
>
JRST NOERR]
IFN SIMU,<PUSHJ P,SETSET>
NOERR: IFE USER,<RELEASE 17,
RELEASE 14,
>
IFN REPORT+TRACK,<
PUSHJ P,CLODAT
CLOSE 15,
>
SKIPN SEG
JRST[ MOVEM 3,STATUS
MOVE 2,[XWD TH,THETA]
BLT 2,THETA+6
MOVE 2,[XWD TORE,ARGS+10]
BLT 2,ARGS+15
MOVE 1,JOB
MOVEM 1,REPLY
SEND REPLY
JRST WAIT
JRST WAIT]
MOVE 2,SEG
CALLI 2,400016
JRST WAIT
HRRZ 4,NAME
MOVE 2,(4)
HLRZ 4,NAME
MOVEM 2,(4)
PUSHJ P,[SETNAM:MOVE 2,THETA
MOVEI 4,6(2)
HRLI 2,TH
IFN TRACK,<SKIPN WALK>
BLT 2,(4)
MOVE 2,ETOR
MOVEI 4,6(2)
HRLI 2,TORE
BLT 2,(4)
PUSHJ P,SETFLT
MOVEM 3,@STATUS
MOVE 4,DOING
MOVEM 4,@SEGMENT
HRRZ 2,NAME
SETZM (2)
HRLZI 2,40
MOVEM 2,IBIT
INTUUO 4,JOB
JUMP
MOVEI 2,0
CORE2 2,
JFCL
POPJ P,]
JRST WAIT
IFN REPORT+TRACK,<
CLODAT:IFN TRACK,<
SKIPE WALK
POPJ P,
>
NWI: HRRZ 1,DATIWD
HRRZ 2,DATPT
SUBI 2,(1)
JUMPL 2,[ HRRZI 2,DATO+DBL-1
SUBI 2,(1)
MOVN 2,2
HRLM 2,DATIWD
SKIPE 2
OUT 15,DATIWD
MOVEI 2,DATO-1
HRRM 2,DATIWD
JRST NWI]
ADDI 2,200
TRZ 2,177
MOVN 1,2
HRLM 1,DATIWD
OUT 15,DATIWD
POPJ P,
>
READ: SETZM STWT
SKIPG 1
TRO POTREAD
TRO RONLY
RSW: PUSHJ P,SPACE
RSWW: MOVE BITSAV
TRNN DTST
IFE USER,<JRST RSWW>
IFN USER,<JRST RSW>
MOVE 3,TRAJER
PUSHJ P,SETSET
JRST FINISH
SPACE: MOVEI 1,=180
MOVEM 1,COUNT
TRO TRIP
LDB 1,[POINT 1,EXE,32]
MOVEM 1,SOTCHS
JUMPE 1,.+2
TRO STCH
IFN DEB,<SETZM ETIM>
MOVEM BITSAV
IFN TRACK,<SKIPE WALK>
IFN TRACK+USER,<
JRST[ MOVEM 17,USAVE+17
MOVEI 17,USAVE
BLT 17,USAVE+16
JSR STRADR-1
HRLZI 17,USAVE
BLT 17,16
MOVE 17,USAVE+17
POPJ P,]
>
IFE USER,<
GETAD: INIT 17,417
SIXBIT /AD/
XWD 0,0
JRST[ POP P,3
MOVEI 3,ADBUS
JRST FINISH]
SPCWAR 1,STRADR
>
POPJ P,
UPDL: FINISH
BLOCK PDLL
IFN USER+TRACK,<
USAVE: BLOCK 20
>
IFN TRACK,<WALK:0>
IFN REPORT+TRACK,<
DFILE: 0
SIXBIT/TMP/
0
DPPPN: 0
>
LFILE: 0
SIXBIT/TRJ/
0
LPPPN: 0
GOODIE: BLOCK 3
FINISH: SPCWAR 636367
IFE USER,<RELEASE 17,
RELEASE 14,
>
SKIPE SEG
JRST [ATSEG: MOVE 1,SEG
CALLI 1,400016
JRST WAIT
PUSHJ P,SETNAM
JRST WAIT]
MOVEM 3,STATUS
MOVE 1,[XWD TH,THETA]
BLT 1,THETA+6
MOVE 1,JOB
MOVEM 1,REPLY
SKIPN 1
JRST WAITED
SEND REPLY
JRST WAIT
JRST WAIT
REPLY: 0
EXE
SEG: 0
SOTCH: 0
JOB: 0
IBIT: 000040000000
TICKS: 0
SETFLT: SKIPN NERVES
POPJ P,
MOVEI 6,1
MOVE 4,NERVES
STL: MOVE 5,OBS(6)
MOVEM 5,(4)
ADDI 4,=16
SOJGE 6,STL
POPJ P,
XLIST
SUBTTL SPACEWAR CODE CONTROL LOU PAUL
LIST